package chapter01;

import java.util.*;

public class GroupAnagrams49 {
    /**
     * 排序+哈希表
     * 遍历字符串数组 得到每一个str
     * str转为数组array后排序 此时的array可以作为key 原本的str作为相同源单词的一个value
     * 因为value不止一个 可以将value放在List中
     * 那么我们遍历过程中只需要判断array是否在HashMap中
     *      若不在就将array作为key放进HashMap value为List str放进List
     *      否则直接将str放入array对应value里
     * 最后将HashMap的value以集合的方式拿出即可
     */
    public List<List<String>> groupAnagrams(String[] strs) {
        if(strs==null){
            return null;
        }
        HashMap<String,List> hashMap=new HashMap<>();
        for(String str:strs){
            char[] array=str.toCharArray();
            Arrays.sort(array);
            String strKey=String.valueOf(array);
            if(!hashMap.containsKey(strKey)){
                hashMap.put(strKey,new ArrayList());
            }
            hashMap.get(strKey).add(str);
        }
        return new ArrayList(hashMap.values());
    }
}
